#include "widget.h"
#include "ui_widget.h"

#include <QDebug>

// disconnect 断开信号和槽之间的连接(断开信号槽的连接)
// disconnect 使用方法和 connect是非常相似的

// disconnect 用的比较少
// 大部分情况下，把信号和槽连接之后，就不必管了
// 主动要断开 往往是 把信号重新绑定到另一个槽函数上
// 使之不会触发多个槽函数

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    connect(ui->pushButton , &QPushButton::clicked , this , &Widget::handleClicked);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::handleClicked()
{
    this->setWindowTitle("窗口标题1");
    qDebug() << "handleCLicked";
}

void Widget::handleClicked2()
{
    this->setWindowTitle("窗口标题2");
    qDebug() << "handleClicked2";
}

void Widget::on_pushButton_2_clicked()
{
    // 1. 先断开 pushbutton 原来的信号
    // 如果没有disconnect，就会构成 一个信号绑定两个槽函数，触发信号的时候两个槽函数都会执行
    disconnect(ui->pushButton , &QPushButton::clicked , this , &Widget::handleClicked);

    // 2.重新绑定信号槽
    connect(ui->pushButton , &QPushButton::clicked , this , &Widget::handleClicked2);
}

